/**
 * 
 */
package com.hd123.rumba.user.biz.share;

import java.util.List;

import net.sf.hibernate.HibernateException;

import com.hd123.rumba.exception.BusinessException;
import com.hd123.rumba.runtime.OperateContext;

/**
 * 指定公共角色包含的用户的操作代理类 | 接口
 * <p>
 * 仅用于界面上指定公共角色包含哪些用户时使用。
 * 
 * @author guzhidi
 * 
 */
public interface IBRoleMemberAgent {

  /**
   * 取得指定的域的角色共享信息。
   * 
   * @param domainUuid
   *          指定的域
   * 
   * @return 角色共享信息。
   * @throws BusinessException
   * @throws HibernateException
   */
  public BRoleMemberAssign getMemberAssign(String domainUuid) throws BusinessException,
      HibernateException;

  /**
   * 取得指定域的下级域的角色共享信息。
   * 
   * @param domainUuid
   *          指定的域
   * 
   * @return 角色共享信息列表。
   * @throws BusinessException
   * @throws HibernateException
   */
  public List<BRoleMemberAssign> getLowerMemberAssigns(String domainUuid) throws BusinessException,
      HibernateException;

  /** 用于描述当前被共享的域集合的所属角色的uuid。 */
  public String getRoleUuid() throws BusinessException;

  public void setRoleUuid(String roleUuid) throws BusinessException;

  /**
   * 执行域共享指令。
   * 
   * @param cmds
   *          指令列表
   * @param context
   *          操作上下文
   * @param oca
   */
  public void executeCommandsT(List<BRoleMemberCommand> cmds, OperateContext context, long oca)
      throws BusinessException, HibernateException;

}
